﻿using System;
using System.Collections.Generic;
using System.Data;
using Persistence = Entersoft.Data.DotNetDAL.SQL.Persistence;

namespace BLL
{
    public class Estados : Common
    {
        private readonly string mTabla;

        private IList<Estado> mLista;

        public IList<Estado> ObtenerLista
        {
            get
            {
                mLista = ObtenerEstados(mTabla);

                return mLista;
            }
        }

        public static IList<Estado> ObtenerEstados(string Tabla)
        {
            var retorno = new List<Estado>();

            var objRP = new Entersoft.Data.DotNetResponse.SQL.Persistence { StoredProcedure = "sp_get_Estados" };

            using (var objConn = new Persistence(false, ConnDB))
            {
                objRP.AddParametro(Tabla);

                objConn.ExecuteDataTable(ref objRP);

                if (!objRP.TieneErrores)
                    if (objRP.DataTable != null)
                        foreach (DataRow row in objRP.DataTable.Rows)
                            retorno.Add(new Estado(Convert.ToInt16(row["EstadoId"]), row["GlosaEstado"].ToString()));
            }

            objRP.Dispose();

            return retorno;
        }

        public static Estado ObtenerEstadoPeriodoById(int EstadoId)
        {
            Estado retorno = null;
            
            foreach (var tmpEstado in ObtenerEstados("tbl_periodos"))
            {
                if (tmpEstado.EstadoId != EstadoId) continue;

                retorno = tmpEstado;
                break;
            }

            return retorno;
        }

        public static IList<Estado> ObtenerEstadosPeriodo()
        {
            var retorno = new List<Estado>();
            
            foreach (var tmpEstado in ObtenerEstados("tbl_periodos"))
                retorno.Add(tmpEstado);

            return retorno;
        }

        public Estados(string Tabla)
        {
            mTabla = Tabla;
        }
    }

    [Serializable]
    public class Estado
    {
        private int mEstadoId;
        private string mGlosaEstado;

        public Estado(int EstadoId, string GlosaEstado)
        {
            mEstadoId = EstadoId;
            mGlosaEstado = GlosaEstado;
        }

        public int EstadoId
        {
            get { return mEstadoId; }
            set { mEstadoId = value; }
        }

        public string Glosa
        {
            get { return mGlosaEstado; }
            set { mGlosaEstado = value; }
        }
    }
}
